# 学生信息管理示例：综合使用各种数据类型

# 1. 数字类型应用
# 整数：学生ID、年龄、课程数量
student_id = 1001  # 学生ID（整数）
age = 20  # 年龄（整数）
course_count = 3  # 选课数量（整数）

# 浮点数：成绩、身高
math_score = 92.5  # 数学成绩（浮点数）
english_score = 88.0  # 英语成绩（浮点数）
height = 1.78  # 身高（米，浮点数）


# 2. 组合数据类型应用
# 元组：存储不可变的固定信息（出生日期、家庭住址坐标）
birthday = (2003, 5, 12)  # 生日（年,月,日）—— 不可修改的日期
home_location = (116.3, 39.9)  # 家庭住址经纬度 —— 固定坐标


# 列表：存储有序且可修改的动态数据（课程列表、兴趣爱好）
courses = ["高等数学", "Python编程", "大学英语"]  # 选课列表（可添加/删除课程）
hobbies = ["篮球", "阅读", "编程"]  # 兴趣爱好（可更新）


# 字典：存储键值关联的结构化信息（学生基本信息）
student_info = {
    "id": student_id,  # 关联整数变量
    "name": "李明",
    "age": age,  # 关联整数变量
    "height": height,  # 关联浮点数变量
    "birthday": birthday,  # 关联元组
    "courses": courses,  # 关联列表
    "scores": {  # 嵌套字典：存储课程成绩
        "高等数学": math_score,
        "Python编程": 95.0,
        "大学英语": english_score
    }
}


# 集合：存储无序且唯一的标签（用于分类和去重）
# 从兴趣爱好列表转换为集合（自动去重，假设可能有重复）
hobby_tags = set(hobbies + ["编程", "电影"])  # 添加新标签并去重


# 3. 数据使用示例
print("===== 学生基本信息 =====")
print(f"学号：{student_info['id']}，姓名：{student_info['name']}")
print(f"年龄：{student_info['age']}岁，身高：{student_info['height']}米")
print(f"生日：{birthday[0]}年{birthday[1]}月{birthday[2]}日")

print("\n===== 学习情况 =====")
print(f"共选修{course_count}门课程：{courses}")
# 计算平均成绩（数字类型运算）
total_score = sum(student_info["scores"].values())
avg_score = total_score / course_count
print(f"平均成绩：{avg_score:.1f}分")  # 浮点数格式化

print("\n===== 兴趣爱好 =====")
print(f"原始爱好列表：{hobbies}")
print(f"去重后的爱好标签：{hobby_tags}")  # 集合自动去重

# 列表动态操作：添加新课程
courses.append("线性代数")
course_count += 1  # 整数自增
print(f"\n添加新课后的课程列表：{courses}，当前课程数：{course_count}")

# 字典动态操作：添加新属性
student_info["is_monitor"] = True  # 新增"是否班长"字段
print(f"更新后的学生信息：{student_info}")